package br.utfpr.edu.managedBean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.utfpr.edu.bean.Projeto;
import br.utfpr.edu.business.NegocioException;
import br.utfpr.edu.dao.ProjetoDao;
import br.utfpr.edu.interfaces.IProjeto;
import br.utfpr.edu.utility.Bean;

@ManagedBean(name = "projectFrm")
@SessionScoped
public class ProjetoFrm extends ListaDetalhe<IProjeto>{
	
	private static final long serialVersionUID = -4405212731337748035L;
	private Map<String,String> situation;
	private String name;
	private IProjeto projeto;
	private List<Projeto> collection;
	
	
	public ProjetoFrm(){
		projeto = new ProjetoDao();
		collection = new ArrayList<Projeto>();
		situation = new HashMap<String, String>();
		situation.put("ATIVO","1");
		situation.put("INATIVO","2");
	}
	
	public void enter(){
		clean();
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect("../project/lista.faces");
		} catch (IOException e) {
			imprimirErrosPagina(e+"");
		}
	}
	
	public void clean(){
		name = "";
		projeto.limpar();
		collection.clear();
	}
	
	public void register(){
		try {
			acao = Acao.INSERIR;
			FacesContext.getCurrentInstance().getExternalContext().redirect("detalhe.faces");
		} catch (IOException e) {
			imprimirErrosPagina(e+"");
		}
	}
	
	public void record(){
		try {
			if(acao ==  Acao.INSERIR){
				projeto.inserir();
				projeto.limpar();
				imprimirSucessoPagina();
			}else if(acao == Acao.ALTERAR){
				projeto.alterar();
				projeto.limpar();
				imprimirSucessoPagina();
			}
			acao = Acao.INSERIR;
		} catch (NegocioException e) {
			imprimirErrosPagina(e);
		}
	}
	
	public void update(){
			Projeto item = (Projeto) getObjetoRequest("item");
			Bean.copiarPropriedades(projeto.getProjeto(), item);
			acao = Acao.ALTERAR;
			try {
				FacesContext.getCurrentInstance().getExternalContext().redirect("detalhe.faces");
			} catch (IOException e) {
				imprimirErrosPagina(e+"");
			}
	}
	
	public void remove(){
		try {
			Projeto item = (Projeto) getObjetoRequest("item");
			Bean.copiarPropriedades(projeto.getProjeto(), item);
			projeto.deletar();
			collection.remove(item);
		} catch (NegocioException e) {
			imprimirErrosPagina(e);
		}
	}
	
	public void search(){
		try {
			collection.clear();
			collection = projeto.pesquisar(name);
		} catch (NegocioException e) {
			imprimirErrosPagina(e);
		}
	}
	
	@Override
	public void sort(String column, boolean ascending) {
		// TODO Auto-generated method stub
	}

	public Map<String, String> getSituation() {
		return situation;
	}

	public void setSituation(Map<String, String> situation) {
		this.situation = situation;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public IProjeto getProjeto() {
		return projeto;
	}

	public void setProjeto(IProjeto projeto) {
		this.projeto = projeto;
	}

	public List<Projeto> getCollection() {
		return collection;
	}

	public void setCollection(List<Projeto> collection) {
		this.collection = collection;
	}
}

